linux中结合sed和grep的全局文本替换示例 您所在的位置:网站首页 linux shell命令替换 linux中结合sed和grep的全局文本替换示例

linux中结合sed和grep的全局文本替换示例

2023-06-08 04:26| 来源: 网络整理| 查看: 265

目录

基本语法

实战例

注意点

基本语法

sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 

        -i 表示inplace edit,就地修改文件         -r 表示递归式地搜索子目录         -l 表示输出匹配的文件名

        oldstring:原字符串

        newstring:要替换成为的新字符串

        path:路径,可以是一个文件路径,也可以是一个目录路径

        注意:grep命令前后是一对“`”,不是单引号,是键盘左上角的那个!

实战例

        在myfolder有两组字符串需要替换:

        (1) RTSEL(2'b01) --> RTSEL(2'b00);

        (2) WTSEL(2'b01) --> WTSEL(2'b00);

        首先,查询一下RTSEL的存在状况:

>> grep -rn "RTSEL" myfolder

myfolder/APERTURE_DATA_PREPARE.sv:73:    .RTSEL(2'b01), myfolder/APERTURE_DATA_PREPARE.sv:109:    .RTSEL(2'b01), myfolder/APERTURE_DATA_PREPARE.sv:145:    .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:74:    .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:111:    .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:148:    .RTSEL(2'b01), myfolder/CHROMA_DATA_PREPARE.sv:185:    .RTSEL(2'b01), myfolder/LUMA_GEN.sv:85:    .RTSEL(2'b01), myfolder/LUMA_GEN.sv:122:    .RTSEL(2'b01), myfolder/LUMA_GEN.sv:159:    .RTSEL(2'b01), myfolder/LUMA_GEN.sv:196:    .RTSEL(2'b01),         

         然后,执行sed + grep命令进行替换,并再次用grep搜索确认:

>> sed -i "s/WTSEL(2'b01)/WTSEL(2'b00)/g" `grep "WTSEL(2'b01)" -rl myfolder`

>> grep -rn "RTSEL" myfolder

myfolder/APERTURE_DATA_PREPARE.sv:73:    .RTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:109:    .RTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:145:    .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:74:    .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:111:    .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:148:    .RTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:185:    .RTSEL(2'b00), myfolder/LUMA_GEN.sv:85:    .RTSEL(2'b00), myfolder/LUMA_GEN.sv:122:    .RTSEL(2'b00), myfolder/LUMA_GEN.sv:159:    .RTSEL(2'b00), myfolder/LUMA_GEN.sv:196:    .RTSEL(2'b00),

        对WTSEL也依葫芦画瓢:

 >> sed -i "s/WTSEL(2'b01)/WTSEL(2'b00)/g" `grep "WTSEL(2'b01)" -rl myfolder` >> grep -rn "WTSEL" myfolder myfolder/APERTURE_DATA_PREPARE.sv:74:    .WTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:110:    .WTSEL(2'b00), myfolder/APERTURE_DATA_PREPARE.sv:146:    .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:75:    .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:112:    .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:149:    .WTSEL(2'b00), myfolder/CHROMA_DATA_PREPARE.sv:186:    .WTSEL(2'b00), myfolder/LUMA_GEN.sv:86:    .WTSEL(2'b00), myfolder/LUMA_GEN.sv:123:    .WTSEL(2'b00), myfolder/LUMA_GEN.sv:160:    .WTSEL(2'b00), myfolder/LUMA_GEN.sv:197:    .WTSEL(2'b00),

        确实蛮灵嘎。。。

注意点

         在grep命令的字符串要用双引号“”围起来,但是在sed命令中的oldstring和newstring不需要双引号围起来!

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有